"""
FastAPI 是一个现代的、高性能的 Python Web 框架，专门用于快速构建 API（应用程序编程接口）。
1.基于 Starlette（一个轻量级的 ASGI 框架/工具包）和 Pydantic（一个用于数据验证和设置管理的库）。
2.由于支持 ASGI 标准，它能够处理异步请求，非常适合处理大量并发请求，
用途：
1. 后端 API：为 Web 前端、移动应用（iOS、Android）、第三方服务提供数据接口。这是它的主要用途。
2. 微服务：由于其轻量和高性能，非常适合构建微服务架构。
3.数据科学和机器学习：为机器学习模型提供预测接口（例如，接收数据并返回模型预测结果

Demo的运行步骤：
1.pip install uvicorn
2.uvicorn fastapi_hello:app --reload
3.在浏览器中打开：网页：http://127.0.0.1:8000/

结果：
http://127.0.0.1:8000/ -> 你会看到 {"Hello": "World"}
http://127.0.0.1:8000/docs -> 你会看到自动生成的交互式 API 文档（Swagger UI），可以直接在上面测试 PUT /items/{item_id} 接口
"""
from fastapi import FastAPI
from pydantic import BaseModel

# 1. 创建一个 FastAPI 实例
app = FastAPI()

# 2. 使用 Pydantic 定义数据模型
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None  # 可选字段

# 3. 定义一个路径操作装饰器
@app.get("/")
async def read_root():
    return {"Hello": "World"}

# 4. 定义另一个路径，使用了路径参数和请求体
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item): # 类型提示自动验证
    return {"item_name": item.name, "item_id": item_id, "item_price": item.price}